from sqlalchemy import Column, String, create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

# 创建Model的基类，子类具备映射数据库表的能力
BASE = declarative_base()


class User(BASE):
    # 定义数据库表名称
    __tablename__ = 'user'
    # 定义数据库表字段
    id = Column(String(20), primary_key=True)
    name = Column(String(20))

    def __str__(self):
        return 'id={0}, name={1}'.format(self.id, self.name)

# 创建数据库连接参数 数据库名称+连接驱动的名称//mysql用户:密码（没有可省略:）@数据库IP:端口号/数据库名称
engine = create_engine('mysql+mysqlconnector://root@localhost:3306/test')
# 建立数据库连接类
DBSession = sessionmaker(bind=engine)

# 创建数据库连接对象
session = DBSession()
# 新建表，如果表已新建，则插入新记录
new_user = User(id=142, name='wanglilin')
session.add(new_user)

# 提交修改
session.commit()

# 查询，filter为查询操作符， one()为获取单条记录
user = session.query(User).filter(User.id == 12).one()

print(user)

# 关闭连接
session.close()
